home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / snake.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-06-03  |  1.8 KB  |  77 lines

  1. 10  REM SNAKE - A TRADITIONAL COMPUTER GAME
  2. 20  REM (C) 1982 PETER QUINN
  3. 30  DEFINT A-Z
  4. 40  TI=VAL(RIGHT$(TIME$,2))
  5. 50  RANDOMIZE TI
  6. 60  OPTION BASE 1
  7. 70  DIM P(2),D(2)
  8. 80  KEY OFF:CLS:SCREEN 0,0,0:WIDTH 80
  9. 90  DEF SEG=&H40
  10. 92  IF (PEEK(&H10) AND &H30)=&H30 THEN DEF SEG=&HB000 ELSE DEF SEG=&HB800
  11. 95  PRINT">>>>>>>>>>>>>>>>SNAKE>>>>>>>>>>>>>>>"
  12. 100  INPUT "ENTER VALUE FOR DELAY ('Q' FOR QUIT, 'RETURN' FOR SAME VALUE)";FF$
  13. 102  IF FF$="" THEN FF$=Z1$
  14. 103  Z1$=FF$
  15. 105  CLS:C=C+1
  16. 107  IF Z1$="" THEN Z1$="7000"
  17. 110  IF Z1$="Q" OR Z1$="q" THEN GOTO 650
  18. 130  Z=VAL(Z1$)
  19. 140  A=219:B=177
  20. 150  P(1)=2010
  21. 160  D(1)=2
  22. 170  P(2)=1990
  23. 180  D(2)=-2
  24. 190  R!=0.8
  25. 200  FOR I=0 TO 160 STEP 2
  26. 210  POKE I,178
  27. 220  POKE I+(4000-160),178
  28. 230  NEXT I
  29. 240  FOR I=0 TO 4000 STEP 160
  30. 250  POKE I,178
  31. 260  POKE I+158,178
  32. 270  NEXT
  33. 280  FOR I=11 TO 14
  34. 290  KEY (I) ON
  35. 300  NEXT
  36. 310  ON KEY(11) GOSUB 450
  37. 320  ON KEY(12) GOSUB 460
  38. 330  ON KEY(13) GOSUB 470
  39. 340  ON KEY(14) GOSUB 480
  40. 350  P(1)=P(1)+D(1)
  41. 360  P(2)=P(2)+D(2)
  42. 370  R!=R!+(1-R!)/20:N=N+1                                                      
  43. 380  IF PEEK(P(1))<>32 THEN GOTO 490
  44. 390  IF PEEK(P(2))<>32 THEN GOTO 500
  45. 400  POKE P(1),A
  46. 410  POKE P(2),B
  47. 420  GOSUB 510
  48. 430  FOR Q=1 TO Z:NEXT Q
  49. 440  GOTO 350
  50. 450  D(1)=-160:RETURN
  51. 460  D(1)=-2:RETURN
  52. 470  D(1)=2:RETURN
  53. 480  D(1)=160:RETURN
  54. 490  GOSUB 700:PRINT CHR$(11);"YOU LOSE   ";:N=N/10:GOTO 600
  55. 500  GOSUB 710:PRINT CHR$(11);"YOU WIN    ";:GOTO 600
  56. 510  IF PEEK(P(2)+D(2))=32 AND RND<R! THEN RETURN
  57. 520  IF ABS(D(2))=2 THEN D(2)=160:GOTO 560
  58. 530  IF ABS(D(2))=160 THEN D(2)=2
  59. 540  IF P(2)<2000 AND D(2)=160 THEN D(2)=-D(2)
  60. 550  GOTO 580
  61. 560  DI=P(2)/160
  62. 570  IF DI>12 THEN D(2)=-D(2):GOTO 580
  63. 580  IF PEEK(D(2)+P(2))<>32 THEN D(2)=-D(2)
  64. 590  RETURN
  65. 600  FOR I=1 TO 1000:NEXT
  66. 610  IF N>HIGH THEN HIGH=N
  67. 620  PT=PT+N:PRINT"SCORE:";N;" AVERAGE SCORE:";INT(PT/C);"HIGH SCORE:"HIGH
  68. 630  N=0
  69. 640  GOTO 100
  70. 650  PRINT"AVERAGE SCORE:";INT(PT/C);"HIGH SCORE:"HIGH
  71. 660  PRINT"THANKS FOR PLAYING"
  72. 670  END
  73. 700  FOR I=100 TO 50 STEP -5:NEXT    'LOSER SOUND
  74. 705  FOR I=1 TO 8:NEXT:RETURN
  75. 710  FOR I=200 TO 300 STEP 20:NEXT  'WINNER SOUND
  76. 715  FOR I=1 TO 2:NEXT:RETURN
  77.